#ifndef CONCRETE_ELEMENT_H
#define CONCRETE_ELEMENT_H

#include"visitor.h"
#include"element.h"
#include<iostream>
// 钟楼
class BellTower : public IPlace
{
public:
    BellTower(string name):IPlace(name){}
    virtual void Accept(IVisitor *visitor) override {
        std::cout << m_PlaceName <<"is accepting visitor1." <<visitor->GetVistorName()<< std::endl;
        visitor->Visit(this);
    }
};

// 兵马俑
class TerracottaWarriors : public IPlace
{
public:
    TerracottaWarriors(string name):IPlace(name){}
    virtual void Accept(IVisitor *visitor) override {
         std::cout << m_PlaceName <<"is accepting visitor2." <<visitor->GetVistorName()<< std::endl;
        visitor->Visit(this);
    }
};

// 市中心
class Center : public IPlace
{
public:
    Center(string name):IPlace(name){}
    virtual void Accept(IVisitor *visitor) override {
         std::cout << m_PlaceName <<"is accepting visitor3." <<visitor->GetVistorName()<< std::endl;
        visitor->Visit(this);
    }
};


#endif // CONCRETE_ELEMENT_H
